package modelo.dominio;

import java.util.Date;
import java.text.SimpleDateFormat;

public class Locacao {
	
	private int idLocacao;
        private int codCliente;
        private int codVeiculo;
        private int codMotorista;
	private Veiculo veiculo;
	private String tipoLocacao;
	private Cliente cliente;
	private double kmSaida;
	private double kmEntrada;
	private double valor;
	private String dataSaida;
	private String dataDevolucao;
	private int previsaoDias;
	private double receitaDia;
	private boolean locacaoFim=false;

	public Locacao() {
		
	}
	
	public Locacao(double kmSaida, double kmEntrada, int prevDias, String tipoLocacao, Veiculo veiculo) {		
		this.veiculo = veiculo;
		this.kmSaida = kmSaida;
		this.kmEntrada = kmEntrada;
		this.tipoLocacao = tipoLocacao;
	}
		
	public String toString() {
		return "Tipo da Loca��o: " + this.tipoLocacao + " Veiculo: " + this.veiculo	+ " kmSaida " + this.kmSaida + " kmEntrada "
	+ this.kmEntrada;
	}
			
	// GETTERS and SETTERS
	
	public int getIdLocacao() {
		return idLocacao;
	}

	public void setIdLocacao(int idLocacao) {
		this.idLocacao = idLocacao;
	}

	public double getKmSaida() {
		return kmSaida;
	}
	
	public String getTipolocacao() {
		return tipoLocacao;
	}

	public void setTipoLocacao(String tipoLocacao) {
		this.tipoLocacao = tipoLocacao;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
	public Veiculo getVeiculo() {
		return veiculo;
	}

	public void setVeiculo(Veiculo veiculo) {
		this.veiculo = veiculo;
	}


	public void setKmSaida(double kmSaida) {
		this.kmSaida = kmSaida;
	}

	public double getKmEntrada() {
		return kmEntrada;
	}

	public void setKmEntrada(double kmEntrada) {
		this.kmEntrada = kmEntrada;
	}

	public double getValor() {
		return valor;
	}

	public void setValor(double valor) {
		this.valor = valor;
	}

	public String getDataSaida() {
		return dataSaida;
	}

	public void setDataSaida(String dataSaida) {
		this.dataSaida = dataSaida;
	}

	public String getDataDevolucao() {
		return dataDevolucao;
	}

	public void setDataDevolucao(String dataDevolucao) {
		this.dataDevolucao = dataDevolucao;
	}

	public int getPrevDias() {
		return previsaoDias;
	}

	public void setPrevDias(int prevDias) {
		this.previsaoDias = prevDias;
	}

	public double getReceitaDia() {
		return receitaDia;
	}

	public void setReceitaDia(double receitaDia) {
		this.receitaDia = receitaDia;
	}

	public boolean isLocFim() {
		return locacaoFim;
	}

	public void setLocFim(boolean locFim) {
		this.locacaoFim = locFim;
	}
        
        public int getCodCliente() {
            return codCliente;
        }

        public void setCodCliente(int codCliente) {
            this.codCliente = codCliente;
        }

        public int getCodMotorista() {
            return codMotorista;
        }

        public void setCodMotorista(int codMotorista) {
            this.codMotorista = codMotorista;
        }

        public int getCodVeiculo() {
            return codVeiculo;
        }

        public void setCodVeiculo(int codVeiculo) {
            this.codVeiculo = codVeiculo;
        }

	//  FIM
	
	public void finalizaLocacao() {
	   locacaoFim = true;
	}
	
	//Fun��o que compara a data do dia do aluguel com a data de devolu��o e calcula os dias para o calculo do pre�o de loca��o
	
	public long compararDatas(String data1, String data2){
		
		SimpleDateFormat df = new SimpleDateFormat ("dd/MM/yyyy");  
		 Date d1 = null;   
		 Date d2 = null;   
		 try {   
		        d1 = df.parse(data1);  
		        d2 = df.parse(data2);  
		  } catch (java.text.ParseException evt ) {}  
		  
		  long dt = (d2.getTime() - d1.getTime()) + 3600000;        
		  long dias = (dt / 86400000L) + 1; 
		return dias-1;
        }
	//fun��o que contem as formulas e faz o calculo de acordo com o tipo de loca��o
	
	public void calcularReceita(double kmEntrada,double kmSaida,long numeroDias,double taxaBase) {
		double resultado;
		if(this.tipoLocacao.equals("Por Quilometragem")){
			//resultado = ((kmEntrada - kmSaida) * this.getVeiculo().tipoVeiculo.getPrecoKm()) + (taxaBase * 			numeroDias);
			//this.setValor(resultado);
		}else{
			resultado = (taxaBase * numeroDias);
			this.setValor(resultado);
		}
		
	}

    public void setTipoLocacao(TipoLocacao tl) {
        throw new UnsupportedOperationException("Not yet implemented");
    }
	
}